import java.util.Scanner;

/**
 * @Author Stringzhua
 * @Date 2024/2/2 15:19
 * description:数组的添加
 * 实现动态的给数组添加元素效果,实现对数组的扩容
 * 1.原始数组使用静态分配 int[] arr={1,2,3}
 * 2.增加的元素4,直接放在数组的最后arr={1,2,3,4}
 * arrNew={1,2,3,4}
 * 3.用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?y/n
 */
public class ArrayAdd02 {
    public static void main(String[] args) {
        /*
         * 思路分析
         * 定义初始数组 int[] arr = {1,2,3}//下标-2
         * 定义一个新的数组 int[] arrNew = new int[arr.length+1];
         * 遍历 arr 数组，依次将arr的元素拷贝到 arrNew数组
         * 将 4 赋给 arrNew[arrNew.length - 1] = 4;把4赋给arrNew最后一个元素
         * 让 arr 指向 arrNew ; arr = arrNew; 那么 原来arr数组就被销毁
         * 创建Scanner可以接受用户输入
         * do-while+break控制
         * */
        Scanner myScanner = new Scanner(System.in);
        int[] arr = {1, 2, 3};
        do {
            int[] arrNew = new int[arr.length + 1];
            for (int i = 0; i < arr.length; i++) {
                arrNew[i] = arr[i];
            }
            System.out.println("请输入你要添加的元素:");
            int addNum = myScanner.nextInt();
            arrNew[arrNew.length - 1] = addNum;
            arr = arrNew;
            System.out.println("===新数组===");
            for (int i = 0; i < arr.length; i++) {
                System.out.println("arr = " + arr[i]);
            }
            System.out.println("是否继续添加?y/n");
            char key=myScanner.next().charAt(0);
            if(key!='y'){//如果未输入y,就结束
                break;
            }
        } while (true);
        System.out.println("你退出了添加~");
    }
}
